package org.example.gxpt.service;

import org.example.gxpt.common.result.PageResult;
import org.example.gxpt.common.result.Result;
import org.example.gxpt.pojo.dto.LoginDTO;
import org.example.gxpt.pojo.dto.UserDTO;
import org.example.gxpt.pojo.dto.UserPageQueryDTO;
import org.example.gxpt.pojo.dto.UserUpdateDTO;
import org.example.gxpt.pojo.entity.User;
import org.example.gxpt.pojo.vo.UserLoginVO;

import java.util.List;

public interface UserService {



    /**
     * 保存新用户
     * @param userDTO
     */
    void save(UserDTO userDTO);


    /**
     * 更新用户数据
     * @param
     */
    void updateById(UserUpdateDTO userUpdateDTO);


    /**
     * 分页查询
     * @param userPageQueryDTO
     * @return
     */
    PageResult pageQuery(UserPageQueryDTO userPageQueryDTO);


    /**
     * 用户登陆
     * @param loginDTO
     * @return
     */
    UserLoginVO login(LoginDTO loginDTO);

    /**
     * 根据id查询用户
     * @param id
     * @return
     */
    User getById(Long id);

    /**
     * 用户登出
     * @return
     */
    Result logout();

    /**
     * 根据上下文更新用户信息
     * @param userUpdateDTO
     */
    void updateByContext(UserUpdateDTO userUpdateDTO);

    /**
     * 用户状态更新
     * @param id
     * @param status
     */
    void updateStatus(Long id, Integer status);

    /**
     * 用户数据删除
     * @param id
     */
    void deleteUserById(Long id);

    /**
     * 查询所有用户
     * @return
     */
    List<User> listAll();
}
